home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / etc / RCS / valloc.c,v < prev    next >
Text File  |  1992-04-21  |  3KB  |  115 lines

  1. head     1.2;
  2. branch   ;
  3. access   ;
  4. symbols  ;
  5. locks    ; strict;
  6. comment  @ * @;
  7.  
  8.  
  9. 1.2
  10. date     92.04.21.14.12.21;  author kupfer;  state Exp;
  11. branches ;
  12. next     1.1;
  13.  
  14. 1.1
  15. date     92.04.19.17.50.53;  author kupfer;  state Exp;
  16. branches ;
  17. next     ;
  18.  
  19.  
  20. desc
  21. @Like malloc, but guarantees that the result is page-aligned.
  22. @
  23.  
  24.  
  25. 1.2
  26. log
  27. @Lint.  Fix so can be used in the kernel.
  28. @
  29. text
  30. @/*
  31.  * Copyright (c) 1980 Regents of the University of California.
  32.  * All rights reserved.
  33.  *
  34.  * Redistribution and use in source and binary forms, with or without
  35.  * modification, are permitted provided that the following conditions
  36.  * are met:
  37.  * 1. Redistributions of source code must retain the above copyright
  38.  *    notice, this list of conditions and the following disclaimer.
  39.  * 2. Redistributions in binary form must reproduce the above copyright
  40.  *    notice, this list of conditions and the following disclaimer in the
  41.  *    documentation and/or other materials provided with the distribution.
  42.  * 3. All advertising materials mentioning features or use of this software
  43.  *    must display the following acknowledgement:
  44.  *    This product includes software developed by the University of
  45.  *    California, Berkeley and its contributors.
  46.  * 4. Neither the name of the University nor the names of its contributors
  47.  *    may be used to endorse or promote products derived from this software
  48.  *    without specific prior written permission.
  49.  *
  50.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  51.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  52.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  53.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  54.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  55.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  56.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  57.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  58.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  59.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  60.  * SUCH DAMAGE.
  61.  */
  62.  
  63. #if defined(LIBC_SCCS) && !defined(lint)
  64. static char sccsid[] = "@@(#)valloc.c    5.5 (Berkeley) 2/23/91";
  65. static char rcsid[] = "$Header: /sprite/lib/forms/RCS/proto.c,v 1.6 92/03/02 15:29:56 bmiller Exp $ SPRITE (Berkeley)";
  66. #endif /* LIBC_SCCS and not lint */
  67.  
  68. #include <cfuncproto.h>
  69. #include <stdlib.h>
  70. #include <unistd.h>
  71. #ifdef KERNEL
  72. #include <vm.h>
  73. #endif
  74.  
  75. _VoidPtr
  76. valloc(i)
  77.     size_t i;
  78. {
  79.     int valsiz;
  80.     int j;
  81.     _VoidPtr cp;
  82.  
  83. #ifdef KERNEL
  84.     valsiz = vm_PageSize;
  85. #else
  86.     valsiz = getpagesize();
  87. #endif
  88.     cp = malloc(i + (valsiz-1));
  89.     j = ((int)cp + (valsiz-1)) &~ (valsiz-1);
  90.     return ((_VoidPtr)j);
  91. }
  92. @
  93.  
  94.  
  95. 1.1
  96. log
  97. @Initial revision
  98. @
  99. text
  100. @d36 1
  101. d39 1
  102. d42 3
  103. d46 1
  104. a46 1
  105. void *
  106. d50 3
  107. a52 2
  108.     int valsiz = getpagesize(), j;
  109.     void *cp = malloc(i + (valsiz-1));
  110. d54 6
  111. d61 1
  112. a61 1
  113.     return ((void *)j);
  114. @
  115.